home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / dev / c / Emperor.lha / Emperor / Projects / DevsManager.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-10-21  |  7.7 KB  |  282 lines

  1. void ReadOut(void);
  2. void AllocListbrowserNodes(struct List *, char labels[256][31]);
  3.  
  4. char *devsdir[] = { "DEVS:Datatypes", "DEVS:DOSDrivers", "DEVS:Keymaps", "DEVS:Monitors", "DEVS:Printers", NULL };
  5. char *storagedir[] = { "SYS:Storage/Datatypes", "SYS:Storage/DOSDrivers", "SYS:Storage/Keymaps", "SYS:Storage/Monitors", "SYS:Storage/Printers", NULL };
  6. char devsentry[5][256][31];
  7. char storageentry[5][256][31];
  8. BYTE devsitems[5] = { 0, 0, 0, 0, 0 };
  9. BYTE storageitems[5] = { 0, 0, 0, 0, 0 };
  10. struct FileLock *lock;
  11. struct FileInfoBlock *f_info;
  12. struct List devslist[5];
  13. struct List storagelist[5];
  14.  
  15. void Window1_CloseWindow_Event(void)
  16. {
  17.     if(Quitrequest1()) Emperor_QuitProgram();
  18. }
  19.  
  20. void Menu_Quit_MenuPick_Event(void)
  21. {
  22.     Window1_CloseWindow_Event();
  23. }
  24.  
  25. void Menu_Information_MenuPick_Event(void)
  26. {
  27.     Inforequest1();
  28. }
  29.  
  30. void Menu_DataTypes_MenuPick_Event(void)
  31. {
  32.     Emperor_SetGadgetAttr(Chooser1, "0");
  33.     Chooser1_GadgetUp_Event();
  34. }
  35.  
  36. void Menu_DOSDrivers_MenuPick_Event(void)
  37. {
  38.     Emperor_SetGadgetAttr(Chooser1, "1");
  39.     Chooser1_GadgetUp_Event();
  40. }
  41.  
  42. void Menu_Keymaps_MenuPick_Event(void)
  43. {
  44.     Emperor_SetGadgetAttr(Chooser1, "2");
  45.     Chooser1_GadgetUp_Event();
  46. }
  47.  
  48. void Menu_Monitors_MenuPick_Event(void)
  49. {
  50.     Emperor_SetGadgetAttr(Chooser1, "3");
  51.     Chooser1_GadgetUp_Event();
  52. }
  53.  
  54. void Menu_Printers_MenuPick_Event(void)
  55. {
  56.     Emperor_SetGadgetAttr(Chooser1, "4");
  57.     Chooser1_GadgetUp_Event();
  58. }
  59.  
  60. void Window1_ShowWindow_Event(void)
  61. {
  62.     Chooser1_GadgetUp_Event();
  63. }
  64.  
  65. void Startup(void)
  66. {
  67.     lock = (struct FileLock *) AllocMem(sizeof(struct FileLock), MEMF_CHIP | MEMF_CLEAR);
  68.     f_info = (struct FileInfoBlock *) AllocMem(sizeof(struct FileInfoBlock), MEMF_CHIP | MEMF_CLEAR);
  69.     ReadOut();
  70. }
  71.  
  72. void Shutdown(void)
  73. {
  74.     FreeMem(lock, sizeof(struct FileLock));
  75.     FreeMem(f_info, sizeof(struct FileInfoBlock));
  76. }
  77.  
  78. void Listbrowser1_GadgetUp_Event(void)
  79. {
  80.     char buffer[200];
  81.     BYTE type, entry;
  82.  
  83.     type = stringtoint(Emperor_GetGadgetAttr(Chooser1));
  84.     entry = stringtoint(Emperor_GetGadgetAttr(Listbrowser1));
  85.     strcpy(buffer, devsdir[type]);
  86.     strcat(buffer, "/");
  87.     strcat(buffer, devsentry[type][entry]);
  88.     strcat(buffer, "  ->  ");
  89.     strcat(buffer, storagedir[type]);
  90.     Emperor_SetGadgetDisabledAttr(Button1, FALSE);
  91.     Emperor_SetGadgetDisabledAttr(Button2, TRUE);
  92.     Emperor_SetGadgetDisabledAttr(Button4, FALSE);
  93.     Emperor_SetGadgetAttr(Listbrowser2, inttostring(-1));
  94.     Emperor_SetGadgetAttrComplex(Button5, GA_Text, buffer);
  95. }
  96.  
  97. void Listbrowser2_GadgetUp_Event(void)
  98. {
  99.     char buffer[200];
  100.     BYTE type, entry;
  101.  
  102.     type = stringtoint(Emperor_GetGadgetAttr(Chooser1));
  103.     entry = stringtoint(Emperor_GetGadgetAttr(Listbrowser2));
  104.     strcpy(buffer, storagedir[type]);
  105.     strcat(buffer, "/");
  106.     strcat(buffer, storageentry[type][entry]);
  107.     strcat(buffer, "  ->  ");
  108.     strcat(buffer, devsdir[type]);
  109.     Emperor_SetGadgetDisabledAttr(Button1, TRUE);
  110.     Emperor_SetGadgetDisabledAttr(Button2, FALSE);
  111.     Emperor_SetGadgetDisabledAttr(Button4, FALSE);
  112.     Emperor_SetGadgetAttr(Listbrowser1, inttostring(-1));
  113.     Emperor_SetGadgetAttrComplex(Button5, GA_Text, buffer);
  114. }
  115.  
  116. void Chooser1_GadgetUp_Event(void)
  117. {
  118.     BYTE type;
  119.  
  120.     type = stringtoint(Emperor_GetGadgetAttr(Chooser1));
  121.     Emperor_SetGadgetAttrComplex(Listbrowser1, LISTBROWSER_Labels, (STRPTR) &devslist[type]);
  122.     Emperor_SetGadgetAttrComplex(Listbrowser2, LISTBROWSER_Labels, (STRPTR) &storagelist[type]);
  123.     Emperor_SetGadgetDisabledAttr(Button1, TRUE);
  124.     Emperor_SetGadgetDisabledAttr(Button2, TRUE);
  125.     Emperor_SetGadgetDisabledAttr(Button4, TRUE);
  126.     Emperor_SetGadgetAttrComplex(Button5, GA_Text, NULL);
  127. }
  128.  
  129. void Button1_GadgetUp_Event(void)
  130. {
  131.     char buffer[200];
  132.     BYTE type, entry;
  133.  
  134.     type = stringtoint(Emperor_GetGadgetAttr(Chooser1));
  135.     entry = stringtoint(Emperor_GetGadgetAttr(Listbrowser1));
  136.     strcpy(buffer, "Run >NIL: C:Copy ");
  137.     strcat(buffer, devsdir[type]);
  138.     strcat(buffer, "/");
  139.     strcat(buffer, devsentry[type][entry]);
  140.     strcat(buffer, "#? ");
  141.     strcat(buffer, storagedir[type]);
  142.     Execute(buffer, NULL, NULL);
  143.     strcpy(buffer, "Run >NIL: C:Delete ");
  144.     strcat(buffer, devsdir[type]);
  145.     strcat(buffer, "/");
  146.     strcat(buffer, devsentry[type][entry]);
  147.     strcat(buffer, "#?");
  148.     Execute(buffer, NULL, NULL);
  149.     ReadOut();
  150.     Chooser1_GadgetUp_Event();
  151. }
  152.  
  153. void Button2_GadgetUp_Event(void)
  154. {
  155.     char buffer[200];
  156.     BYTE type, entry;
  157.  
  158.     type = stringtoint(Emperor_GetGadgetAttr(Chooser1));
  159.     entry = stringtoint(Emperor_GetGadgetAttr(Listbrowser2));
  160.     strcpy(buffer, "Run >NIL: C:Copy ");
  161.     strcat(buffer, storagedir[type]);
  162.     strcat(buffer, "/");
  163.     strcat(buffer, storageentry[type][entry]);
  164.     strcat(buffer, "#? ");
  165.     strcat(buffer, devsdir[type]);
  166.     Execute(buffer, NULL, NULL);
  167.     strcpy(buffer, "Run >NIL: C:Delete ");
  168.     strcat(buffer, storagedir[type]);
  169.     strcat(buffer, "/");
  170.     strcat(buffer, storageentry[type][entry]);
  171.     strcat(buffer, "#?");
  172.     Execute(buffer, NULL, NULL);
  173.     ReadOut();
  174.     Chooser1_GadgetUp_Event();
  175. }
  176.  
  177. void Button3_GadgetUp_Event(void)
  178. {
  179.     ReadOut();
  180.     Chooser1_GadgetUp_Event();
  181. }
  182.  
  183. void Button4_GadgetUp_Event(void)
  184. {
  185.     char buffer[200];
  186.     BYTE type, entry1, entry2;
  187.  
  188.     type = stringtoint(Emperor_GetGadgetAttr(Chooser1));
  189.     entry1 = stringtoint(Emperor_GetGadgetAttr(Listbrowser1));
  190.     entry2 = stringtoint(Emperor_GetGadgetAttr(Listbrowser2));
  191.     if(entry1 != -1)
  192.     {
  193.         strcpy(buffer, "Run >NIL: C:Delete ");
  194.         strcat(buffer, devsdir[type]);
  195.         strcat(buffer, "/");
  196.         strcat(buffer, devsentry[type][entry1]);
  197.         strcat(buffer, "#?");
  198.         Execute(buffer, NULL, NULL);
  199.     }
  200.     if(entry2 != -1)
  201.     {
  202.         strcpy(buffer, "Run >NIL: C:Delete ");
  203.         strcat(buffer, storagedir[type]);
  204.         strcat(buffer, "/");
  205.         strcat(buffer, storageentry[type][entry2]);
  206.         strcat(buffer, "#?");
  207.         Execute(buffer, NULL, NULL);
  208.     }
  209.     ReadOut();
  210.     Chooser1_GadgetUp_Event();
  211. }
  212.  
  213. void ReadOut(void)
  214. {
  215.     BYTE i = 0, j;
  216.  
  217.     for(i = 0;i < 5;i++)
  218.     {
  219.         for(j = 0;j <= devsitems[i];j++)
  220.         {
  221.             devsentry[i][j][0] = NULL;
  222.         }
  223.         for(j = 0;j <= storageitems[i];j++)
  224.         {
  225.             storageentry[i][j][0] = NULL;
  226.         }
  227.         devsitems[i] = 0;
  228.         storageitems[i] = 0;
  229.  
  230.         if(lock = (struct FileLock *) Lock(devsdir[i], ACCESS_READ))
  231.         {
  232.             if(Examine((BPTR) lock, f_info))
  233.             {
  234.                 while(ExNext((BPTR) lock, f_info))
  235.                 {
  236.                     if(!strstr(f_info->fib_FileName, ".info"))
  237.                     {
  238.                         strcpy(devsentry[i][devsitems[i]], f_info->fib_FileName);
  239.                         devsitems[i]++;
  240.                     }
  241.                     if(devsitems[i] == 255) break;
  242.                 }
  243.             }
  244.             UnLock((BPTR) lock);
  245.         }
  246.         if(lock = (struct FileLock *) Lock(storagedir[i], ACCESS_READ))
  247.         {
  248.             if(Examine((BPTR) lock, f_info))
  249.             {
  250.                 while(ExNext((BPTR) lock, f_info))
  251.                 {
  252.                     if(!strstr(f_info->fib_FileName, ".info"))
  253.                     {
  254.                         strcpy(storageentry[i][storageitems[i]], f_info->fib_FileName);
  255.                         storageitems[i]++;
  256.                     }
  257.                     if(storageitems[i] == 255) break;
  258.                 }
  259.             }
  260.             UnLock((BPTR) lock);
  261.         }
  262.  
  263.         AllocListbrowserNodes(&devslist[i], devsentry[i]);
  264.         AllocListbrowserNodes(&storagelist[i], storageentry[i]);
  265.     }
  266. }
  267.  
  268. void AllocListbrowserNodes(struct List *list, char labels[256][31])
  269. {
  270.   struct Node *node;
  271.   WORD i = 0;
  272.  
  273.   NewList(list);
  274.   while(labels[i][0] != NULL)
  275.   {
  276.     node = AllocListBrowserNode(1, LBNCA_CopyText, TRUE, LBNCA_Text, labels[i], TAG_DONE);
  277.     AddTail(list, node);
  278.     i++;
  279.   }
  280. }
  281.  
  282.